/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
package Model;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

/**
 *
 * @author Lukas
 */
public class AlunoDAO {

    /*
     * Map<String, Aluno> map = new HashMap<String, Aluno>();
     *
     *
     * // não apaga isso vai servir como teste no momento da pesquisa dps se
     * falamo bj public AlunoDAO() { Aluno aluno = new Aluno();
     * aluno.setNome("Luis"); map.put("Luis", aluno); }
     *
     * Aluno findByName(String nome) { return map.get(nome); }
     *
     * void save(Aluno aluno) { map.put(aluno.getNome(), aluno); }
     *
     * List<Aluno> findAll() { return (List<Aluno>) map.values();
    }
     */
    private EntityManager em;

    public AlunoDAO() {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EscolaConstruirPU");
        em = emf.createEntityManager();
    }

    public List<Aluno> findByName(String nome) {
        Query query = (Query) em.createQuery("select a"
                + "from Aluno a"
                + "where a.nome = :nome");

        query.setParameter("nome", nome);
        return query.getResultList();
    }
    
    public List<Aluno> findAll() {
        Query query = (Query) em.createQuery("select a from Aluno a");
        return query.getResultList();
    }

    public void create(Aluno aluno) {
        em.getTransaction().begin();
        em.persist(aluno);
        em.getTransaction().commit();
    }

    public void update(Aluno aluno) {
        em.getTransaction().begin();
        em.merge(aluno);
        em.getTransaction().commit();
    }

    public void remove(Aluno aluno) {
        em.getTransaction().begin();
        Aluno pessoaManaged = em.find(Aluno.class, aluno.getMatricula());
        em.remove(pessoaManaged);
        em.getTransaction().commit();
    }
}
